/*namedpipe2.c*/  
#include<stdio.h>  
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <error.h>
#include <fcntl.h>
// 定义缓冲区大小
#define N 20

int main(){
    // 定义一个字符数组用于存储要写入管道的数据
    char buf[N];
    // 以只写模式打开命名管道文件 /home/lyq/mypipe
    // 如果文件不存在，open 函数不会创建它
    int fd= open("/home/lyq/mypipe",O_WRONLY);

    // 检查命名管道是否成功打开
    if(fd!=-1) {  
        // 若成功打开，输出提示信息
        printf("FIFO file is opened\n");  
    }  
    else    {
        // 若打开失败，输出错误信息并终止程序
        perror("open failed"); 
        exit(0);
    }

    // 提示用户输入要写入管道的字符串
    printf("please input string\n");
    // 从标准输入读取用户输入的字符串，存储到 buf 数组中
    scanf("%s",buf); 
    // 消耗掉 scanf 遗留的换行符
    getchar();

    // 尝试将 buf 数组中的数据写入命名管道
    if ( write(fd,buf,sizeof(buf))!=-1 ) {
        // 若写入成功，输出提示信息
        printf("write successful\n");
    }
    else {
        // 若写入失败，输出错误信息
        perror("write failed:");
    }

    // 程序正常退出
    exit(EXIT_SUCCESS);  
}